# 基于node镜像，alpine版本用于docker镜像构建
FROM node:22-alpine

# 设置docker容器的工作目录
# 指定在创建容器后，终端默认登录的进来工作目录，一个落脚点，后续的COPY、ADD、RUN、CMD、ENTRYPOINT指令都会在这个工作目录下执行
# 目录不存在时，自动创建
WORKDIR /app

# 拷贝package.json文件到工作目录，目的目录基于WORKDIR
# !!重要：package.json需要单独添加。
# Docker在构建镜像的时候，是一层一层构建的，仅当这一层有变化时，重新构建对应的层。
# 如果package.json和源代码一起添加到镜像，则每次修改源码都需要重新安装npm模块。
# 所以，正确的顺序是: 添加package.json；安装npm模块；添加源代码。
COPY package*.json ./

# 安装npm模块
RUN npm i --production

# 添加源代码到工作目录
COPY . .

# 暴露端口
EXPOSE 7001

# 设置启动命令,默认production环境
CMD [ "npm", "start" ]




